Skip to content

build(deps): migrate to ESLint flat config, eslint 10 & typescript-eslint 8#50

Merged
DGINXREAL merged 1 commit into
mainfrom
chore/eslint-flat-config-migration
Jul 22, 2026
Merged

build(deps): migrate to ESLint flat config, eslint 10 & typescript-eslint 8#50
DGINXREAL merged 1 commit into
mainfrom
chore/eslint-flat-config-migration

Conversation

@DGINXREAL

Copy link
Copy Markdown
Member

Summary

Upgrades the lint toolchain as one coherent change. Dependabot split this into separate PRs (#35 eslint 10, #44 @typescript-eslint/parser 8, #42 @typescript-eslint/eslint-plugin 8) that each failed at npm ci on peer conflicts, because these packages must move together and ESLint 9/10 requires a flat-config migration. This PR supersedes all three.

Changes

  • eslint 8 → 10, @typescript-eslint/{parser,eslint-plugin} 5 → the unified typescript-eslint 8 meta package; add @eslint/js + globals.
  • Replace eslint-plugin-import (no ESLint 10 support — peers cap at ^9) with the actively maintained eslint-plugin-import-x 4 + eslint-import-resolver-typescript. Same rules, import-x/* namespace.
  • Port .eslintrc.jsoneslint.config.mjs (flat config), replicating the previous setup (js + typescript-eslint + import recommended, electron, typescript, browser/node globals, config-file override). Kept non-type-checked to preserve the existing rule profile — enabling type-aware linting is a separate, larger change.
  • Lint script: eslint --ext .ts,.tsx .eslint ..

Fallout fixed

  • Node globals for plain-JS build scripts (scripts/*.mjs), which the old --ext .ts,.tsx never linted.
  • Removed an unused deps binding in register.test.ts and a now-stale eslint-disable for no-empty-function (that rule left typescript-eslint recommended in v6+; v8 also promotes no-unused-vars to error).

Verification

  • npm ci clean from the new lockfile · npm audit → 0 vulnerabilities
  • npm run lint0 errors (down from a 171-warning baseline; 6 pre-existing warnings remain — import-x/no-duplicates, no-named-as-default-member)
  • tsc --noEmit clean
  • 533/533 tests passing

Follow-up

Once merged, Dependabot PRs #35, #44 and #42 become obsolete and can be closed. The remaining failing majors (#43 typescript 7, #33 @electron/fuses 2) stay blocked upstream — typescript-eslint still requires typescript <6.1.0.

…lint 8

Upgrades the lint toolchain that Dependabot could not bump piecemeal
(#35/#44/#42 each failed on peer conflicts):

- eslint 8 -> 10, @typescript-eslint/{parser,eslint-plugin} 5 -> the
  unified `typescript-eslint` 8 meta package, add @eslint/js + globals
- replace eslint-plugin-import (no eslint 10 support) with the maintained
  eslint-plugin-import-x 4 + eslint-import-resolver-typescript
- port .eslintrc.json to eslint.config.mjs (flat config), kept
  non-type-checked to preserve the existing rule profile
- lint script: `eslint --ext .ts,.tsx .` -> `eslint .`

Fallout fixed: node globals for JS build scripts (previously unlinted),
remove an unused `deps` binding and a now-stale eslint-disable directive
(no-empty-function left typescript-eslint recommended in v6+).

Lint: 0 errors (down from 171 warnings; 6 pre-existing warnings remain).
@DGINXREAL
DGINXREAL merged commit e62c602 into main Jul 22, 2026
1 check passed
@DGINXREAL
DGINXREAL deleted the chore/eslint-flat-config-migration branch July 22, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant